﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;

using NUnit.Framework;
using Uhi.Libraries.Text;

using Uhi.Applications.FileAid.Model;

namespace FileAidTest
{
    [TestFixture]
    public class RecordInfoTest
    {
        //#region TestDir
        //private string TestDir
        //{
        //    get { return Path.Combine(Path.GetTempPath(), "RecordInfoTest"); }
        //}
        //#endregion

        //#region Setup
        //[SetUp]
        //public void Setup()
        //{
        //    var tempDir = this.TestDir;
        //    var file = "";
        //    var encode = Encoding.GetEncoding("shift_jis");

        //    Directory.CreateDirectory(tempDir);

        //    file = Path.Combine(tempDir, "test1.txt");
        //    using (var st = new StreamWriter(file, false, encode))
        //    {
        //        st.Write("abcde");
        //    }

        //    file = Path.Combine(tempDir, "test2.txt");
        //    using (var st = new StreamWriter(file, false, encode))
        //    {
        //        st.Write("あいうえお");
        //    }

        //    file = Path.Combine(tempDir, "test3.txt");
        //    using (var st = new StreamWriter(file, false, encode))
        //    {
        //        st.Write("aあbいcうdえeお");
        //    }

        //    file = Path.Combine(tempDir, "test4.txt");
        //    using (var st = new FileStream(file, FileMode.Create))
        //    using (var st2 = new BinaryWriter(st))
        //    {
        //        var b = new byte[] { 0xa, 0xb, 0xc, 0xd, 0xe };
        //        st2.Write(b);
        //    }
        //}
        //#endregion

        //#region TearDown
        //[TearDown]
        //public void TearDown()
        //{
        //    var tempDir = this.TestDir;
        //    Directory.Delete(tempDir, true);
        //}
        //#endregion

        //#region 半角文字のみ
        //[Test]
        //public void Record_半角文字のみ()
        //{
        //    string file = Path.Combine(this.TestDir, "test1.txt");
        //    var recs = RecordInfo.GetRecords(file, 100);
        //    Assert.AreEqual(1, recs.Length);
        //    Assert.AreEqual("abcde", recs[0].Record_old);
        //}
        //#endregion

        //#region 全角文字のみ
        //[Test]
        //public void Record_全角文字のみ()
        //{
        //    string file = Path.Combine(this.TestDir, "test2.txt");
        //    var recs = RecordInfo.GetRecords(file, 100);
        //    Assert.AreEqual(1, recs.Length);
        //    Assert.AreEqual("あいうえお", recs[0].Record_old);
        //}
        //#endregion

        //#region 全半角混在
        //[Test]
        //public void Record_全半角混在()
        //{
        //    string file = Path.Combine(this.TestDir, "test3.txt");
        //    var recs = RecordInfo.GetRecords(file, 100);
        //    Assert.AreEqual(1, recs.Length);
        //    Assert.AreEqual("aあbいcうdえeお", recs[0].Record_old);
        //}
        //#endregion

        //#region 制御文字
        //[Test]
        //public void Record_制御文字()
        //{
        //    string file = Path.Combine(this.TestDir, "test4.txt");
        //    var recs = RecordInfo.GetRecords(file, 100);
        //    Assert.AreEqual(1, recs.Length);
        //    Assert.AreEqual("0A0B0C0D0E".FromHex(), recs[0].Record_old);
        //}
        //#endregion

        //#region Lengthがファイルサイズと同じ
        //[Test]
        //public void Record_Lengthがファイルサイズと同じ()
        //{
        //    string file = Path.Combine(this.TestDir, "test3.txt");
        //    var recs = RecordInfo.GetRecords(file, 15);
        //    Assert.AreEqual(1, recs.Length);
        //    Assert.AreEqual("aあbいcうdえeお", recs[0].Record_old);
        //}
        //#endregion

        //#region Lengthがファイルサイズより大きい
        //[Test]
        //public void Record_Lengthがファイルサイズより大きい()
        //{
        //    string file = Path.Combine(this.TestDir, "test3.txt");
        //    var recs = RecordInfo.GetRecords(file, 30);
        //    Assert.AreEqual(1, recs.Length);
        //    Assert.AreEqual("aあbいcうdえeお", recs[0].Record_old);
        //}
        //#endregion

        //#region Lengthがファイルサイズより小さい
        //[Test]
        //public void Record_Lengthがファイルサイズより小さい()
        //{
        //    string file = Path.Combine(this.TestDir, "test3.txt");
        //    var recs = RecordInfo.GetRecords(file, 3);
        //    Assert.AreEqual(5, recs.Length);
        //    Assert.AreEqual("aあ", recs[0].Record_old);
        //    Assert.AreEqual("bい", recs[1].Record_old);
        //    Assert.AreEqual("cう", recs[2].Record_old);
        //    Assert.AreEqual("dえ", recs[3].Record_old);
        //    Assert.AreEqual("eお", recs[4].Record_old);
        //}
        //#endregion
    }
}
